package 操作;

import 实体.会员卡;
import 实体.dbutils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class 会员卡_操作 {
    public List<会员卡> 查询all() throws SQLException{
        try {
            List<会员卡> list=new ArrayList<>();
            Connection conn=dbutils.getCon();
            PreparedStatement stmt=null;
            ResultSet res=null;
            stmt=conn.prepareStatement("select * from 会员卡");
            res=stmt.executeQuery();
            list=result(conn,stmt,res);
            dbutils.close(conn,stmt,res);
            return list;
        }catch (SQLException e){
            return null;
        }
    }
    public List<会员卡> 搜索(String input) throws SQLException{
        try {
            List<会员卡> list = new ArrayList<>();
            Connection conn = dbutils.getCon();
            PreparedStatement stmt = null;
            ResultSet res = null;
            stmt = conn.prepareStatement("select * from  会员卡  where 卡号=?");
            stmt.setString(1,input);
            res = stmt.executeQuery();
            list = result(conn,stmt,res);
            dbutils.close(conn,stmt,res);
            return list;
        }catch (SQLException e){
            e.printStackTrace();
            return null;
        }
    }
    public List<会员卡> 删除(String input) throws SQLException{
        try {
            List<会员卡> list = new ArrayList<>();
            Connection conn = dbutils.getCon();
            PreparedStatement stmt = null;
            ResultSet res = null;
            stmt = conn.prepareStatement("DELETE FROM 会员卡 where 卡号 = ? ");
            stmt.setString(1,input);
            stmt.executeUpdate();
            stmt = conn.prepareStatement("select * from 会员卡 ");
            res = stmt.executeQuery();
            list = result(conn,stmt,res);
            dbutils.close(conn,stmt,res);
            return list;
        }catch (SQLException e){
            e.printStackTrace();
            return null;
        }
    }
    public List<会员卡> 增加(String[] input) throws SQLException{
        try {
            List<会员卡> list=new ArrayList<>();
            Connection conn=dbutils.getCon();
            PreparedStatement stmt=null;
            ResultSet res=null;
            stmt=conn.prepareStatement("insert into 会员卡(卡号,姓名,类型,余额,折扣,状态) value (?,?,?,?,?,?)");
            for (int i=0;i<input.length;i++){
                stmt.setString(i+1,input[i]);
            }
            stmt.executeUpdate();
            stmt=conn.prepareStatement("select * from 会员卡");
            res=stmt.executeQuery();
            list=result(conn,stmt,res);
            dbutils.close(conn,stmt,res);
            return list;
        }catch (SQLException e){
            e.printStackTrace();
            return null;
        }
    }
    public List<会员卡> 修改(String[] input) throws SQLException{
        try {
            List<会员卡> list=new ArrayList<>();
            Connection conn=dbutils.getCon();
            PreparedStatement stmt=null;
            ResultSet res=null;
            stmt=conn.prepareStatement("update 会员卡 set 类型=?,余额=?,折扣=?,状态=? where 卡号=?");
            for (int i=0;i<input.length;i++){
                stmt.setString(i+1,input[i]);
            }
            stmt.executeUpdate();
            stmt=conn.prepareStatement("select * from 会员卡");
            res=stmt.executeQuery();
            list=result(conn,stmt,res);
            dbutils.close(conn,stmt,res);
            return list;
        }catch (SQLException e){
            e.printStackTrace();
            return null;
        }
    }
    public List<会员卡> result(Connection conn,PreparedStatement stmt,ResultSet res) throws SQLException{
        List<会员卡> list=new ArrayList<>();
        try{
            while(res.next()){
                String 卡号=res.getString("卡号");
                String 姓名=res.getString("姓名");
                String 类型=res.getString("类型");
                String 余额=res.getString("余额");
                String 折扣=res.getString("折扣");
                String 状态=res.getString("状态");
                会员卡 s=new 会员卡(卡号,姓名,类型,余额,折扣,状态);
                list.add(s);
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
        finally
        {
            dbutils.close(conn,stmt,res);
        }
        return list;
    }
}
